package com.levy.contronller.jvm.bytecode;

import org.junit.Test;

/**
 * 方法的动态分派
 * 方法的动态分派涉及到一个重要概念：方法的接收者
 * invokevirtual字节码指令的多态查找流程
 */
public class MyTest6 {
    public static void main(String[] args) {
        Fruit f1 = new Apple();
        Fruit f2 = new orange();

        f1.test();
        f2.test();

        f1 = new orange();
        f1.test();
    }
}

class Fruit{
    public void test(){
        System.out.println("fruit");
    }
}

class Apple extends Fruit{
    @Override
    public void test() {
        System.out.println("Apple");
    }
}

class orange extends Fruit{
    @Override
    public void test() {
        System.out.println("orange");
    }
}
